package frsf.cidisi.exercise.tpidemia.situationCalculus;

import frsf.cidisi.exercise.tpidemia.entidades.Aldea;
import frsf.cidisi.exercise.tpidemia.entidades.Cofre;
import frsf.cidisi.exercise.tpidemia.entidades.Dijkstra;
import frsf.cidisi.exercise.tpidemia.entidades.PairDist;
import frsf.cidisi.faia.agent.Agent;
import frsf.cidisi.faia.agent.situationcalculus.SituationCalculusPerception;
import frsf.cidisi.faia.environment.Environment;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;

public class ArqueologoPerception extends SituationCalculusPerception {

    //TODO: Setup Sensors
    
    	
        private Aldea posicion;
	private HashMap<String, Cofre> satelite;
	private Cofre camara;	
        private HashMap<String, Collection<PairDist>> map;
        private double pesoAcoplado;
        private double valorAcoplado;
        private Aldea aldeaFinal;

    public Aldea getPosicion() {
        return posicion;
    }

    public void setPosicion(Aldea posicion) {
        this.posicion = posicion;
    }

    public Aldea getAldeaFinal() {
        return aldeaFinal;
    }

    public void setAldeaFinal(Aldea aldeaFinal) {
        this.aldeaFinal = aldeaFinal;
    }
        

    public double getPesoAcoplado() {
        return pesoAcoplado;
    }

    public void setPesoAcoplado(double pesoAcoplado) {
        this.pesoAcoplado = pesoAcoplado;
    }

    public double getValorAcoplado() {
        return valorAcoplado;
    }

    public void setValorAcoplado(double valorAcoplado) {
        this.valorAcoplado = valorAcoplado;
    }

    public HashMap<String, Collection<PairDist>> getMap() {
        return map;
    }

    public void setMap(HashMap<String, Collection<PairDist>> map) {
        this.map = map;
    }

    public HashMap<String, Cofre> getSatelite() {
        return satelite;
    }

    public void setSatelite(HashMap<String, Cofre> satelite) {
        this.satelite = satelite;
    }


    public Cofre getCamara() {
        return camara;
    }

    public void setCamara(Cofre camara) {
        this.camara = camara;
    }

        
    public ArqueologoPerception() {
        super();


    }

    @Override
public void initPerception(Agent agent, Environment environment) {

        
}

    @Override
    public String toString() {
 
        String str = "perception([";
        str+=posicion.getNombre()+",";
        str+=camara.getPeso()+","+camara.getValor()+",[";
        for (Aldea ald : posicion.getAdyacentes()) {
            str+=ald.getNombre()+",";
        }
        str= str.substring(0,str.length()-1);
        str+="], [";
        Dijkstra dij = new Dijkstra();
        for(Aldea ald : posicion.getAdyacentes()){
            str+=dij.mejorCamino(ald.getNombre(),aldeaFinal.getNombre())+",";
        }
        str= str.substring(0,str.length()-1);
        
        str+="], [";
        for(Aldea ald : posicion.getAdyacentes()){
            str+=ald.getCofre().getPeso()+",";       
        }
        str= str.substring(0,str.length()-1);
        str+="],[";
        
        for(Aldea ald : posicion.getAdyacentes()){
            str+=ald.getCofre().getValor()+",";       
        }
        str= str.substring(0,str.length()-1);
        str+="], ";
        str+= pesoAcoplado+","+valorAcoplado+"],";
        
        return str; 
        
    }
}
